package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

// Security配置类
@Configuration
public class SecurityConfig {
    // 定义认证逻辑
//    @Bean
//    public UserDetailsService userDetailsService(){
//        // 1.使用内存数据进行认证
//        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
//        // 2.创建两个用户
//        UserDetails user1 = User.withUsername("sgh").password("123").authorities("admin").build();
//        UserDetails user2 = User.withUsername("zds").password("456").authorities("admin").build();
//        // 3.将这两个用户添加到内存中
//        manager.createUser(user1);
//        manager.createUser(user2);
//        return manager;
//    }


    // Security详细配置
//    @Bean
//    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
//        // 自定义表单登录
//        http.formLogin(form -> {
//            form.loginPage("/login.html") // 自定义登录页面
//                    .usernameParameter("username") // 表单中的用户名项
//                    .passwordParameter("password") // 表单中的密码项
//                    .loginProcessingUrl("/login") //登录路径，表单向该路径提交，提交后自动执行UserDetailsService的方法
//                    .successForwardUrl("/main.html") //登录成功后跳转的路径
//                    .failureForwardUrl("/fail.html"); //登录失败后跳转的路径
//        });
//
//
//        // 需要认证的资源
//        http.authorizeHttpRequests(resp -> {
//            resp.requestMatchers("/login.html", "/fail.html").permitAll(); // 不需要认证的资源
//            resp.requestMatchers("/css/*.css","/js/*.js","/img/**").permitAll(); // 静态资源不需要认证
//            resp.anyRequest().authenticated();//其余所有请求都需要认证
//        });
//
//
//        // 关闭csrf防护
//        http.csrf(csrf ->{
//            csrf.disable();
//        });
//        return http.build();
//    }
    //密码编码器，不解析密码
    @Bean
    public PasswordEncoder passwordEncoder(){
        return NoOpPasswordEncoder.getInstance();
    }
}

